<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>
      //   //1.定义函数有几种方式
      //   两种, 函数声明式, 函数表达式;
      //   //2. return关键字的作用
      //   使用return语句时, 函数会停止, 并返回指定的值;
      //   //3.函数实参数和形参个数不等时会发生什么?举例说明
      //   function add(a, b) {
      //     console.log(a + b);
      //   }
      //   add(1, 2, 8); //3
      //   实参大于形参, 多余的实际参数会出现丢失的情况;
      //   function add(a, b, c) {
      //     console.log(c); //undefined
      //     console.log(a + b + c);
      //   }
      //   add(1, 2); //NaN
      //   由于已经定义了一个形式参数,
      //     多余的形式参数没有进行实际参数的赋值,
      //     所以他们的值都是undefined;
      //   //4.var和function 关键字有什么特别功能?
      //   变量提升和函数提升, 提升到执行环境的顶部, 函数提升在变量提升上面;
      //5.定义一个函数，该函数功能为， 传入一个值返回这个值的平方值；请再写出一个函数，功能为:传入二个值，分别是x和y,返回x的y次方结果
      //   function two(a) {
      //     console.log(a ** 2);
      //   }
      //   two();
      //   function ping(x, y) {
      //     console.log(x ** y);
      //   }
      //   ping();
      //6.请写出一个函数，功能为:传入2个值，则返回其中的最大值:请再写一个函数 传入3个值，返回其中的最大值
      //   function max(a, b) {
      //     if (a < b) {
      //       return b;
      //     } else {
      //       return a;
      //     }
      //   }
      //   console.log(max());
      // function three(a, b, c) {
      //   o = a > b ? a : b;
      //   return o > c ? o : c;
      // }
      // console.log(three(10000, 200, 30));

      //7.请定义一个函数，输入一个N值，则计算出该值的阶乘，即: n! = 1*2*3*4*5*6*..*N
      //   var sum = 1;
      //   function jie(n) {
      //     for (i = 1; i <= n; i++) {
      //       sum *= i;
      //     }
      //     console.log(sum);
      //   }
      //   jie();
      //8.以下代码的console. log打印的是什么，并解释原因，写出分析过程

      //   console.log(a);
      // 函数提升到执行环境的顶部，所以第一个console.log(a)的结果为
      //   ƒ a() {
      //     console.log(4);
      //   }

      //   var a = 1;
      //   console.log(a);
      //var 变量提升到顶部，但赋值还在原地，所以第二个打印a的值为1

      //   function a() {
      //     console.log(2);
      //   }
      //   console.log(a);
      //var 变量提升到顶部，但赋值还在原地，所以第三个打印a的值为1

      //   var a = 3;
      //   console.log(a);
      //var 变量提升到顶部，但赋值还在原地，所以第四个打印a的值为3

      //   function a() {
      //     console.log(4);
      //   }
      //   console.log(a);
      //var 变量提升到顶部，但赋值还在原地，所以第五个打印a的值为3
      //   a();
      //因为函数提升会被变量赋值覆盖，所以此时a不是一个函数，输出a is not a function

      //9. (提高)喇叭花数，喇叭花数和水仙花数类似的一个三位数，其每一位数字的阶乘之和恰好等于它本身。 abc = a! +b! + c!.用函数的方法寻找喇叭花数

      // function laba() {
      //   var a, b, c;
      //   var abc;
      //   for (abc = 100; abc < 1000; abc++) {
      //     var suma = 1;
      //     var sumb = 1;
      //     var sumc = 1;
      //     a = parseInt(abc / 100);
      //     b = parseInt((abc % 100) / 10);
      //     c = abc % 10;
      //     for (i = 1; i <= a; i++) {
      //       suma *= i;
      //     }
      //     for (i = 1; i <= b; i++) {
      //       sumb *= i;
      //     }
      //     for (i = 1; i <= c; i++) {
      //       sumc *= i;
      //     }
      //     if (abc == suma + sumb + sumc) {
      //       console.log(abc);
      //     }
      //   }
      // }
      // laba();
      //10. (提高)123['toString'].length + 123 =?

      //234[' toFixed' ]. length+456=?为什么
    </script>
  </body>
</html>
